'''
Description: 
Author: Zilu
Date: 2021-11-07 14:50:25
Version: 
LastEditTime: 2021-11-07 15:03:30
LastEditors: Zilu
'''

# class 可以从某个现有的 class 继承，构成父类、子类的关系，子类可以继承父类的方法
class Animal(object):
    def run(self):
        print("Animal is running...")

# 继承的方法可以修改，也可以创建新的方法
class Dog(Animal):
    def run(self):
        print('Dog is running...')

class Cat(Animal):
    def run(self):
        print('Cat is running...')

dog = Dog()
cat = Cat()

dog.run()
cat.run()

# 多态可以根据实例的具体类型（子类），使用在父类中存在的名称相同，但在子类中实现不同的方法
def runTwice(animal:Animal):
    animal.run()
    animal.run()

class Tortoise(Animal):
    def run(self):
        print('Tortoise is running slowly...')

tortoise = Tortoise()
runTwice(dog)
runTwice(tortoise)

# 开放原则：
# 对扩展开放：允许给父类新增子列
# 对修改封闭：不需要修改依赖于父类的普通方法



